package com.yy.wga.mp.module.pay.client.request.alipay;

import com.alibaba.fastjson.annotation.JSONField;
import com.yy.wga.mp.module.pay.client.request.BasePreOrderRequest;
import com.yy.wga.mp.module.pay.client.response.alipay.AliPayAppPreOrderResponse;
import com.yy.wga.mp.module.pay.client.request.BasePreOrderRequest;
import com.yy.wga.mp.module.pay.client.response.alipay.AliPayAppPreOrderResponse;
import com.yy.wga.mp.module.pay.client.request.BasePreOrderRequest;
import com.yy.wga.mp.module.pay.client.response.alipay.AliPayAppPreOrderResponse;
import com.yy.wga.mp.module.pay.client.request.BasePreOrderRequest;
import com.yy.wga.mp.module.pay.client.response.alipay.AliPayAppPreOrderResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import javax.validation.constraints.NotBlank;

/**
 * @Author: gc
 * @Date: 2021/6/13
 * @Description:
 **/
@EqualsAndHashCode(callSuper = true)
@Data
@ToString(callSuper = true)
public class AliPayAppPreOrderRequest extends BasePreOrderRequest<AliPayAppPreOrderResponse> {
    private static final long serialVersionUID = 4512706488463641745L;

    /**
     * 内部订单号
     */
    @JSONField(name = "out_trade_no")
    @NotBlank(message = "订单号为空")
    private String outTradeNo;

    /**
     * 订单总金额。单位为元，精确到小数点后两位
     */
    @JSONField(name = "total_amount")
    private String totalAmount;

    /**
     * 订单标题
     */
    private String subject;

    /**
     * 订单描述
     */
    private String body;

    /**
     * 订单相对超时时间。该笔订单允许的最晚付款时间，逾期将关闭交易。取值范围：5m～15d。m-分钟，h-小时，d-天，1c-当天
     */
    @JSONField(name = "timeout_express")
    private String timeoutExpress;

    /**
     * 异步通知地址为空
     */
    @JSONField(name = "notify_url")
    private String notifyUrl;

    /**
     * 订单绝对超时时间。 格式为yyyy-MM-dd HH:mm:ss。支付宝优先使用该参数
     */
    @JSONField(name = "time_expire")
    private String timeExpire;

    /**
     * 公用回传参数。必须进行UrlEncode
     */
    @JSONField(name = "passback_params")
    private String passbackParams;

    /**
     * 商家和支付宝签约的产品码。 枚举值（点击查看签约情况）：QUICK_MSECURITY_PAY：无线快捷支付产品；CYCLE_PAY_AUTH：周期扣款产品。
     */
    @JSONField(name = "product_code")
    private String productCode;
}
